/**
 * 用于配置节点、路径有哪些属性
 *
 * 增加了的属性：
 * 	readonly：	是否只读。类型为boolean，控制input是否能被修改
 * 	disabled:	是否可用。类型为boolean，控制input是否显示为不可修改状态（灰色）
 * 	hidden:		是否隐藏域。
 * 	onchange:	select元素对象值改变时触发的事件
 *
 * @author Administrator
 */
var Prop = {
    nodes: [[{
        subject: '步骤ID',
        id: 'n_p_id',
        text: 'span'
    }, {
        subject: '步骤类型',
        id: 'n_p_type_name',
        text: 'span'
    }, {
        subject: '步骤名称',
        id: 'n_p_name',
        text: 'input'
    },{
        subject: '步骤顺序',
        id: 'n_p_sort',
        text: 'input'
    },{
        subject: '是否优先处理',
        text: 'select',
        id: 'n_p_isPriorDeal',
        defaultValue:false,
        options: [{
            id:true,
            text: '是'
        }, {
            id:false,
            text: '否'}]
    },{
        subject: '优先处理步骤id',        	// 实际值
        id: 'n_p_priorDealStepIds',
        text: 'input',
        readonly: true,
        btn:{
        	click:openPriorDealStepDialog
        }
    },{
        subject: '优先处理步骤名称',                // 显示内容
        id: 'n_p_priorDealStepNames',
        text: 'input',
        readonly: true
    },{
        subject: '处理方式',
        id: 'n_p_execute_mode',
        text: 'select',
        defaultValue:'MANUAL',
        options: [{
            id: 'MANUAL',
            text: '人工处理',
            title: '需要选择步骤的处理人员'
        },{
        	id: 'ANY',
        	text: '任意步骤结束即流程结束',
        	title: '某步骤的最后处理人选择了结束步骤，即结束流程实例\r\n    (只针对结束步骤，不需要选择本步骤处理人)'
        },{
        	id: 'ALL',
        	text: '全部步骤结束才流程结束',
        	title: '流程实例的最后处理人选择了结束步骤，即流程实例结束\r\n    (只针对结束步骤，不需要选择本步骤处理人)'
        }]
    }, {
        subject: '是否可退回',
        text: 'select',
        id: 'n_p_canRollback',
        defaultValue:true,
        options: [{
            id:true,
            text: '是'
        }, {
            id:false,
            text: '否'}]
    }, {
        subject: '是否可收回',
        id: 'n_p_canRevoke',
        text: 'select',
        defaultValue: true,
        options: [{
            id: true,
            text: '是'
        }, {
            id: false,
            text: '否'}]
    }, {
        subject: '是否可结束',
        id: 'n_p_canFinish',
        text: 'select',
        defaultValue: true,
        options: [{
            id: true,
            text: '是'
        }, {
            id: false,
            text: '否'}]
    }, {
        subject: '是否可发布',
        id: 'n_p_canPublish',
        text: 'select',
        defaultValue: true,
        options: [{
            id: true,
            text: '是'
        }, {
            id: false,
            text: '否'}]
    }, {
        subject: '是否增加回复',
        id: 'n_p_canAddReplyObj',
        text: 'select',
        defaultValue: false,
        options: [{
            id: true,
            text: '是'
        }, {
            id: false,
            text: '否'}]
    }, {
        subject: '是否可看回复',
        id: 'n_p_canSeeReplyObj',
        text: 'select',
        defaultValue: false,
        options: [{
            id: true,
            text: '是'
        }, {
            id: false,
            text: '否'}]
    }, {
        subject: '是否可分期办',
        id: 'n_p_canPeriodDeal',
        text: 'select',
        defaultValue: false,
        options: [{
            id: true,
            text: '是'
        }, {
            id: false,
            text: '否'}]
    }, {
        subject: '是否可转批示',
        id: 'n_p_canToPiShi',
        text: 'select',
        defaultValue: false,
        options: [{
            id: true,
            text: '是'
        }, {
            id: false,
            text: '否'}]
    }, {
        subject: '是否可收文登记',
        id: 'n_p_canToSwdj',
        text: 'select',
        defaultValue: false,
        options: [{
            id: true,
            text: '是'
        }, {
            id: false,
            text: '否'}]
    },{
        subject: '是否显发布对象',
        id: 'n_p_canDisplayPublisher',
        text: 'select',
        defaultValue: false,
        options: [{
            id: true,
            text: '是'
        }, {
            id: false,
            text: '否'}]
    }, {
        subject: '发布对象权限',
        id: 'n_p_canModifyPublisher',
        text: 'select',
        defaultValue: false,
        options: [{
            id: true,
            text: '可修改'
        }, {
            id: false,
            text: '只读'}]
    }, {
        subject: '是否可否决',
        id: 'n_p_canVeto',
        text: 'select',
        defaultValue: true,
        options: [{
            id: true,
            text: '是'
        }, {
            id: false,
            text: '否'}]
    }, {
        subject: '是否可请示',
        id: 'n_p_canAskFor',
        text: 'select',
        defaultValue: true,
        options: [{
            id: true,
            text: '是'
        }, {
            id: false,
            text: '否'}]
    }, {
        subject: '是否可申请延期',			//	最多一星期  是否可申请延期
        id: 'n_p_canAskWeekDelay',
        text: 'select',
        defaultValue: false,
        options: [{
            id: true,
            text: '是'
        }, {
            id: false,
            text: '否'}]
    }, {
        subject: '是否可申请拒办',			//	最多一星期  是否可申请拒办
        id: 'n_p_canAskWeekRefuse',
        text: 'select',
        defaultValue: false,
        options: [{
            id: true,
            text: '是'
        }, {
            id: false,
            text: '否'}]
    }, {
        subject: '是否可申请退文',			//	最多一星期  是否可申请退文审核
        id: 'n_p_canAskWeekBack',
        text: 'select',
        defaultValue: false,
        options: [{
            id: true,
            text: '是'
        }, {
            id: false,
            text: '否'}]
    },{
        subject: '表单字段权限',                // 显示内容
        id: 'n_p_formFiledPermShow',
        text: 'input',
        readonly: true,
        btn:{
        	click:openFFMDefineDialog
        }
    },{
        subject: '表单字段权限设置内容',        // 实际值
        id: 'n_p_formFiledPerm',
        text: 'input',
        hidden: true
/**        不再使用的属性，需要在NodelOval、Node、NodeImg这三个对象的setProperty()方法中屏蔽掉**/
    }, {
        subject: '是否可预设后续步骤',
        id: 'n_p_isPreSetNextStep',
        text: 'select',
        title: '用于在某个步骤设置多个后续步骤的处理人、传阅人(只针对自由流程)',
        readonly: false,
        defaultValue: false,
        options: [{
            id: true,
            text: '是'
        }, {
            id: false,
            text: '否'}]
   },{
        subject: '可预设的步骤id',        	// 实际值
        id: 'n_p_preSetNextStepIds',
        text: 'input',
        readonly: true,
        btn:{
        	click:openPreSetStepDialog
        }
    },{
        subject: '可预设步骤名称',                // 显示内容
        id: 'n_p_preSetNextStepNames',
        text: 'input',
        readonly: true
    },{
        subject: '循环选择本步骤',                // 显示内容
        id: 'n_p_isCycle',
        text: 'select',
        title: '本步骤是否可以作为后续步骤，在提交时被选择',
        defaultValue: false,
        options: [{
            id: false,
            text: '否'
        }, {
            id: true,
            text: '是'}]
    },{
        subject: '多步骤选择方式',                // 显示内容
        id: 'n_p_stepsSelectMode',
        text: 'select',
        title: '本步骤定义了多个后续步骤，运行如何选择后续步骤(只针对自由流程)',
        defaultValue: 'one',
        options: [{
            id: 'ONE',
            text: '一个步骤',
            title: '当后续步骤有多个时，只能选择其中一个作为下步骤\r\n   (类似于顺序步骤的处理)'
        }, {
            id: "ALL",
            text: '多个步骤',
            title: '当后续步骤有多个时，可选择多个步骤作为下步骤\r\n    (类似于并行步骤的处理)'
        }]
    },{
        subject: '执行本步骤条件',                // 显示的计算公式内容。用于设置满足什么样的条件下，才能执行（进入）本步骤
        id: 'n_p_doConditionShow',
        text: 'input',
        title: '复杂的同步情况下，进入本同步步骤的条件(只针对同步步骤)',
        readonly: true,
        disabled: true,
        btn:{
        	click:	openDoConditionDialog
        }
    },{
        subject: '执行本步骤条件表达式',        	// 实际的计算公式内容
        id: 'n_p_doCondition',
        text: 'input',
        hidden: true
	},{
        subject: '步骤人员显示的意见范围',
        id: 'n_p_showOpinionRange',
        text: 'select',
        title:	'用于设置当前步骤处理人，可以查看的意见的范围',
		defaultValue: 'ALL',
        options: [{
            id: 'ALL',
            text: '全部意见'
        }, {
            id: 'SELF',
            text: '本人意见'
        }, {
            id: 'SELF_CREATER',
            text: '本人及创建人意见'}]
	},{
		subject: '是否指定为反馈步骤',				// 指定为反馈步骤
		id: 'n_p_isBackStep',
		text: 'select',
		title: '用于设置反馈步骤，指定后会在指定了显示反馈信息的步骤显示其反馈结果',
		defaultValue: false,
        options: [{
            id: false,
            text: '否'
        }, {
            id: true,
            text: '是'}]
    },{
		subject: '是否显示反馈信息',				// 显示反馈信息
		id: 'n_p_canShowBackInfo',
		text: 'select',
		title: '本步骤是否以已反馈和未反馈的方式显示指定反馈部门的反馈信息',
		defaultValue: false,
        options: [{
            id: false,
            text: '否'
        }, {
            id: true,
            text: '是'}]
    },{
		subject: '是否承办步骤',				// 是否承办步骤
		id: 'n_p_isUnderTakeStep',
		text: 'select',
		title: '本步骤是否是业务处室承办步骤',
		defaultValue: false,
        options: [{
            id: false,
            text: '否'
        }, {
            id: true,
            text: '是'}]
    }],[{
        subject: '自动递交处理人',
        id: 'n_p_isAutoSendToExecuter',
        text: 'select',
        title: '提交时，是否自动将本步骤设置好的处理人作为默认的处理人，填写在“处理人”文本框中',
        defaultValue: false,
        options: [{
            id: false,
            text: '否'
        }, {
            id: true,
            text: '是'}]
    }, {
        subject: '处理人类型',
        id: 'n_p_executerType',
        text: 'select',
        defaultValue: 'USER',
        options: [{
            id: 'USER',
            text: '个人'
        }, {
            id: 'DEPT',
            text: '部门（人）'
        },{
            id: 'GROUP',
            text: '岗位（人）'
        },{
            id: 'ROLE',
            text: '角色'
        },{
            id: 'CREATER',
            text: '创建人'
        },{
            id: 'EXECUTERS',
            text: '已处理人'
        },{
            id: 'PRE_STEP_CREATER',
            text: '上一步骤创建人或部门'
        },{
            id: 'DEPT_ALL_USER',
            text: '当前人所在部门人员'
        },{
            id: 'UNDERTAKESTEP_DEALER',
            text: '承办步骤最后处理人'
        },{
            id: 'READERS',
            text: '已传阅人'
        },{
            id: 'ALL',
            text: '全体人员'
        },{
            id: 'CONDITION',
            text: '条件'
        },{
            id: 'FORM_ELEMENT',
            text: '表单元素'
        },{
            id: 'DEPTNOCHANGE',
            text: '部门'
        }]
    }, {
        subject: '处理人id',
        id: 'n_p_executers',
        text: 'input',
        readonly: true,
        btn: {
            click: getProcessor
        }
    }, {
        subject: '处理人姓名',
        id: 'n_p_executersName',
        text: 'input',
        readonly: true
    }, {
        subject: '处理人员关系',
        id: 'n_p_executerRelation',
        text: 'select',
        title: '多个处理人时，处理的午后顺序\r\n顺序：各人之间按顺序处理流程，前一个人处理完了，后一个才能处理；\r\n并行：各人可以同时处理流程；\r\n竞争：只要有一个人处理了，就算处理完成',
        defaultValue: 'SEQUENCE',
        options: [{
            id: 'SEQUENCE',
            text: '关系_顺序'
        }, {
            id: 'PARALLED',
            text: '关系_并行'
        },{
            id: 'COMPETE',
            text: '关系_竞争'
        }]
    }, {
        subject: '自动递交传阅人',
        id: 'n_p_isAutoSendToReader',
        text: 'select',
        title: '提交时，是否自动将本步骤设置好的传阅人作为默认的传阅人，填写在“传阅人”文本框中',
        defaultValue: false,
        options: [{
            id: false,
            text: '否'
        }, {
            id: true,
            text: '是'}]
    }, {
        subject: '传阅人类型',
        id: 'n_p_readerType',
        text: 'select',
        defaultValue: 'ALL',
        options: [{
        	id:	'NONE',
        	text: '无传阅人'
        },{
            id: 'USER',
            text: '个人'
        }, {
            id: 'DEPT',
            text: '部门'
        },{
            id: 'GROUP',
            text: '岗位'
        },{
            id: 'ROLE',
            text: '角色'
        },{
            id: 'CREATER',
            text: '创建人'
        },{
            id: 'EXECUTERS',
            text: '已处理人'
        },{
            id: 'READERS',
            text: '已传阅人'
        },{
            id: 'ALL',
            text: '全体人员'
        },{
            id: 'CONDITION',
            text: '条件'
        },{
            id: 'FORM_ELEMENT',
            text: '表单元素'
        }]
	},{
        subject: '传阅人id',
        id: 'n_p_readers',
        text: 'input',
        readonly: true,
        btn: {
        	click: getReaders
	   	}
	},{
        subject: '传阅人姓名',
        id: 'n_p_readersName',
        text: 'input',
        readonly: true
    },{
        subject: '抄送人类型',
        id: 'n_p_ccUserType',
        text: 'select',
        defaultValue: 'ALL',
        options: [{
        	id:	'NONE',
        	text: '无抄送人'
        },{
            id: 'USER',
            text: '个人'
        }, {
            id: 'DEPT',
            text: '部门'
        },{
            id: 'GROUP',
            text: '岗位'
        },{
            id: 'ROLE',
            text: '角色'
        },{
            id: 'CREATER',
            text: '创建人'
        },{
            id: 'EXECUTERS',
            text: '已处理人'
        },{
            id: 'CC',
            text: '已抄送人'
        },{
            id: 'ALL',
            text: '全体人员'
        },{
            id: 'CONDITION',
            text: '条件'
        },{
            id: 'FORM_ELEMENT',
            text: '表单元素'
        }]
	},{
        subject: '抄送人id',
        id: 'n_p_ccUsers',
        text: 'input',
        readonly: true,
        btn: {
        	click: getCcUsers
	   	}
	},{
        subject: '抄送人姓名',
        id: 'n_p_ccUsersName',
        text: 'input',
        readonly: true
    },{
        subject: '回复对象类型',
        id: 'n_p_replyObjType',
        text: 'select',
        defaultValue: 'NONE',
        options: [{
        	id:	'NONE',
        	text: '无'
        },{
            id: 'USER',
            text: '个人'
        }, {
            id: 'DEPT',
            text: '部门'
        },{
            id: 'ROLE',
            text: '角色'
        },{
            id: 'ORG',
            text: '单位'
        },{
            id: 'ALL_ORG',
            text: '全部单位'
        }]
	},{
        subject: '对象显示名称',
        id: 'n_p_replyObjCustomName',
        text: 'input',
        readonly: false
	},{
        subject: '回复对象id',
        id: 'n_p_replyObjs',
        text: 'input',
        readonly: true,
        btn: {
        	click: getReplyObjs
	   	}
	},{
        subject: '回复对象名称',
        id: 'n_p_replyObjsName',
        text: 'input',
        readonly: true
	},{
       subject: '动态增加处理人',
        id: 'n_p_canAddExecuters',
        text: 'select',
        title: '任意处理人提交时，是否都能增加后续步骤处理人(只针对自由流程)',
        defaultValue: false,
        options: [{
            id: false,
            text: '否'
        }, {
            id: true,
            text: '是'}]
    },{
       subject: '是否移动端处理',
        id: 'n_p_canMobileDeal',
        text: 'select',
        title: '当前步骤是否可以选择移动端处理，并默认是',
        defaultValue: false,
        options: [{
            id: false,
            text: '否'
        }, {
            id: true,
            text: '是'}]
    },{
       subject: '短信对象获取',
        id: 'n_p_canGetSmsGovDesktop',
        text: 'select',
        title: '当前步骤是否从机关事务平台获取短信的发送对象，默认否',
        defaultValue: false,
        options: [{
            id: false,
            text: '否'
        }, {
            id: true,
            text: '是'}]
    }],
    [{subject: '是否可上传',
        id: 'n_p_canFileUpload',
        text: 'select',
        defaultValue: true,
         options: [{
            id: true,
            text: '是'
        }, {
            id: false,
            text: '否'}]
    },{subject: '是否可删除',
        id: 'n_p_canFileRemove',
        text: 'select',
        defaultValue: true,
         options: [{
            id: true,
            text: '是'
        }, {
            id: false,
            text: '否'}]
	},{subject: '是否可下载',
        id: 'n_p_canFileDownload',
        text: 'select',
        defaultValue: true,
         options: [{
            id: true,
            text: '是'
        }, {
            id: false,
            text: '否'}]
     },{subject: '可上传反馈文件',
         id: 'n_p_canUploadBackFile',
         text: 'select',
 		defaultValue:false,
         options: [{
              id: true,
              text: '是'
          }, {
              id: false,
              text: '否'}]
      }],[{subject: '是否可盖章',
             id: 'n_p_canWordSeal',
             text: 'select',
             defaultValue: false,
             options: [{
                 id: true,
                 text: '是'
             }, {
                 id: false,
                 text: '否'}]
	    },{subject: 'word盖章方式',
		     id: 'n_p_wordSealType',
		     text: 'select',
		     defaultValue: 'SUSEN',
		     options: [{
		         id: 'TG',
		         text: '天谷'
		     }, {
		         id: 'SUSEN',
		         text: '书生'}]
		},
        {subject: '是否二次盖章',
            id: 'n_p_canAgainWordSeal',
            text: 'select',
            defaultValue: false,
            options: [{
                id: true,
                text: '是'
            }, {
                id: false,
                text: '否'}]
        },
        {subject: '是否显示修改痕迹',
        id: 'n_p_canWordShowMark',
        text: 'select',
        defaultValue: true,
         options: [{
            id: true,
            text: '是'
        }, {
            id: false,
            text: '否'}]
	},{subject: '是否显示word工具栏',
        id: 'n_p_canWordShowToolbar',
        text: 'select',
        defaultValue: true,
         options: [{
            id: true,
            text: '是'
        }, {
            id: false,
            text: '否'}]
	},{subject: '是否可修改文档',
        id: 'n_p_canWordModifyDoc',
        text: 'select',
        defaultValue: true,
         options: [{
            id: true,
            text: '是'
        }, {
            id: false,
            text: '否'}]
	},{subject: '是否可手写签名',
        id: 'n_p_canWordHandDraw',
        text: 'select',
        defaultValue: true,
         options: [{
            id: true,
            text: '是'
        }, {
            id: false,
            text: '否'}]
	},{subject: '是否可打印正文',
        id: 'n_p_canPrintDoc',
        text: 'select',
        defaultValue: true,
         options: [{
            id: true,
            text: '是'
        }, {
            id: false,
            text: '否'}]
	},{subject: '是否打印表单内容',
        id: 'n_p_canPrintForm',
        text: 'select',
        defaultValue: true,
         options: [{
            id: true,
            text: '是'
        }, {
            id: false,
            text: '否'}]
	},{subject: '是否可评分',
        id: 'n_p_canEvaluation',
        text: 'select',
        defaultValue: false,
         options: [{
            id: true,
            text: '是'
        }, {
            id: false,
            text: '否'}]
	},{
        subject: '考评类型ID',
        id: 'n_p_evaluationTypeId',
        text: 'input',
        readonly: true,
        btn: {
        	click: getOrgLarge
	   	}
	},{
        subject: '考评类型名称',
        id: 'n_p_evaluationTypeName',
        text: 'input',
        readonly: true
	},{subject: '是否弹框提示',
        id: 'n_p_isPopup',
        text: 'select',
        defaultValue: false,
         options: [{
            id: true,
            text: '是'
        }, {
            id: false,
            text: '否'}]
	},{
        subject: '审核标准ID',
        id: 'n_p_auditingStandardsId',
        text: 'input',
        readonly: true,
        btn: {
        	click: getStandardsLib
	   	}
	},{
        subject: '审核标准名称',
        id: 'n_p_auditingStandardsName',
        text: 'input',
        readonly: true
	},{
        subject: '批注范例ID',
        id: 'n_p_annotationExampleId',
        text: 'input',
        readonly: true,
        btn: {
        	click: getExamplesLib
	   	}
	},{
        subject: '批注范例名称',
        id: 'n_p_annotationExampleName',
        text: 'input',
        readonly: true
	},{subject: '是否可自评',
        id: 'n_p_canSelfEvaluation',
        text: 'select',
        defaultValue: false,
         options: [{
            id: true,
            text: '是'
        }, {
            id: false,
            text: '否'}]
	},{
        subject: '自评主体ID',
        id: 'n_p_selfEvaluationMainBodyId',
        text: 'input',
        readonly: true,
        btn: {
        	click: getOrgSelfEvaluation
	   	}
	},{
        subject: '自评主体名称',
        id: 'n_p_selfEvaluationMainBodyName',
        text: 'input',
        readonly: true
	}],[{
        subject: '进入前执行',
        id: 'n_p_preEventName',
        text: 'input'
	},{
        subject: '事件类型',
        id: 'n_p_preEventType',
        text: 'select',
         options: [{
            id: 'class',
            text: 'java类'
                }, {
            id: 'SPRING',
            text: 'spring的bean'
        	},{
            id: 'BEANSHELL',
            text: 'beanshell'
        	},{
            id: 'GROOVY',
            text: 'groovy'
        	}]
	},{
        subject: '对应类',
        id: 'n_p_preEventClassName',
        text: 'input'
	},{
        subject: 'scirpt代码',
        id: 'n_p_preEventScript',
        text: 'textarea'
	},{
        subject: '结束后执行',
        id: 'n_p_postEventName',
        text: 'input'
	},{
        subject: '事件类型',
        id: 'n_p_postEventType',
        text: 'select',
         options: [{
            id: 'class',
            text: 'java类'
                }, {
            id: 'SPRING',
            text: 'spring的bean'
        	},{
            id: 'BEANSHELL',
            text: 'beanshell'
        	},{
            id: 'GROOVY',
            text: 'groovy'
        	}]
	},{
        subject: '对应类',
        id: 'n_p_postEventClassName',
        text: 'input'
	},{
        subject: 'scirpt代码',
        id: 'n_p_postEventScript',
        text: 'textarea'
	}]],
    lines: [[{
        subject: 'ID',
        id: 'l_p_id',
        text: 'span'
    }, {
        subject: '名称',
        id: 'l_p_name',
        text: 'input'
    }, {
        subject: '进入条件',
        id: 'l_p_condition',
        text: 'input',
		btn: {
			click: function(){
		        var group = document.getElementById('group');
		        var groupObj = group.getAttribute('bindClass');
				if(groupObj.selectedObj.length==0 || groupObj.selectedObj[0].type!="line"){
					alert("请你先选择一条路径！");
					return;
				}

				if(groupObj.selectedObj[0].fromObj.type.toUpperCase()!="BRANCH"
						&& groupObj.selectedObj[0].fromObj.type.toUpperCase()!="START"){
					alert("开始步骤不是分支类型的步骤，不能设置条件！");
					return;
				}
				var v = $("#l_p_condition").val();
				openPathConditionDialog(v);
			}
		}
    }, {
        subject: '开始步骤',
        id: 'l_p_pre',
        text: 'span'
    }, {
        subject: '结束步骤',
        id: 'l_p_next',
        text: 'span'
    }]],
    panels: [{
        flag: 'help',
        id: 'help',
        type: 0,
        title: '帮助',
        body: '1.环节可用鼠标拖拽<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;' +
				'鼠标选中环节后不释放，拖拽鼠标，环节将随鼠标移动，释放鼠标后，环节不再移动。<br>' +
				'2.路径的两个端点可以通过鼠标拖拽，改变路径指向的环节<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;' +
				'鼠标选中路径的端点后不释放，拖拽鼠标，路径被选中的端点将鼠标移动，在选中的环节释放鼠标后，' +
				'路径被选中的端点将指向该选中的环节。<br>' + '3.ctrl+a，全选。<br>' +
				'4.按住ctrl，鼠标选中对象，可以多选。<br>5.delete，删除选中对象。<br>' +
				'6.使用鼠标多选<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;' +
				'鼠标点击空白处不释放，拖拽鼠标，会出现一个长方形虚框，虚框的范围随着鼠标移动而变化，虚框范围内的对象将被选中。' +
				'<br>'
    },{
        flag: 'n',
        id: 'n_prop_panel',
        type: 1,
        title: '环节',
        tabs: [{
            id: '属性',
            val: 0,
            type: 'nodes'
        }, {
            id: '人员',
            val: 1,
            type: 'nodes'
        },{
            id: '附件',
            val: 2,
            type: 'nodes'
        }, {
            id: '文档',
            val: 3,
            type: 'nodes'
        },  {
            id: '事件',
            val: 4,
            type: 'nodes'
        }]
    }, {
        flag: 'l',
        id: 'l_prop_panel',
        type: 1,
        title: '路径',
        tabs: [{
            id: '属性',
            val: 0,
            type: 'lines'
        }]
    }],
    clear: function(){
		// 用来清空 属性框中的所有信息。如果需要设置默认值，需要修改本处的代码，以便清除值之后，再赋默认值
        for (var i = 0; i < this.nodes.length; i++) {
            var obj = this.nodes[i];
            for (var j = 0; j < obj.length; j++) {
            	if(typeof(document.getElementById(obj[j].id))=="undefined"
            		|| document.getElementById(obj[j].id)==null){
            		continue;
            	}
                switch (obj[j].text) {
                    case 'span':
                        document.getElementById(obj[j].id).innerHTML = '';
                        break;
                    default:
                        document.getElementById(obj[j].id).value = '';
						if(obj[j].defaultValue && obj[j].defaultValue!=""){
							//设置默认值
							document.getElementById(obj[j].id).value = obj[j].defaultValue;
						}
                        break;
                }
            }
        }
        for (var i = 0; i < this.lines.length; i++) {
            var obj = this.lines[i];
            for (var j = 0; j < obj.length; j++) {
            	if(typeof(document.getElementById(obj[j].id))=="undefined"
            		|| document.getElementById(obj[j].id)==null){
            		continue;
            	}
                switch (obj[j].text) {
                    case 'span':
                        document.getElementById(obj[j].id).innerHTML = '';
                        break;
                    default:
                        document.getElementById(obj[j].id).value = '';
                        break;
                }
            }
        }
    },
	/**
	 * 用于设置对象的属性值（被属性窗口中的"应用"按钮调用）
	 * @param {Object} type
	 */
    setProperty: function(type){
        var objs = null;
        if (type == 'n')
            objs = this.nodes;
        else
            objs = this.lines;
        var arr = [];
		//环节、路径的tabs(即每一页属性)
        for (var i = 0; i < objs.length; i++) {
            var obj = objs[i];
			//各个tab中的具体属性
            for (var j = 0; j < obj.length; j++) {
            	//logger.log(obj[j].id);
                var v = null;
                switch (obj[j].text) {
                    case 'span':
                        v = document.getElementById(obj[j].id).innerHTML;
                        break;
                    default:
                        v = document.getElementById(obj[j].id).value;
                        break;
                }
				// 是否只读
				var vReadonly = false;
				if(typeof(obj[j].readonly)!="undefiend" && obj[j].readonly==true){
					vReadonly = true;
				}
				// 是否禁用
				var vDisabled = false;
				if(typeof(obj[j].disabled)!="undefiend" && obj[j].disabled==true){
					vDisabled = true;
				}
                var json = {
                    id: obj[j].id,
                    text: obj[j].text,
                    value: v,
                    readonly: vReadonly,
                    disabled: vDisabled
                };
                arr[arr.length] = json;
            }
        }
        return arr;
    },
	/**
	 * 设置某个对象（节点、路径）指定id的属性值。
	 * 根据id，找到对象中的某个属性，然后将value作为此属性的值赋值过去
	 *
	 * @param {Object} props	要设置的属性值集合
	 * @param {Object} id		属性id
	 * @param {Object} value	属性值
	 */
	setPropertyValueById:function(props,id,value){
		if(props==null || props.length==0)	return;
		for(var i=0;i < props.length; i++){
			p = props[i];
			if(p.id == id){		//指本对象头部定义的属性id
				p.value = value;
				break;
			}
		}
	},
	/**
	 * 根据给定的节点的id，找到相应的节点对象。找不到则返回null
	 *
	 * @param {string} nodeId
	 * @return object
	 */
	getNodeObjById:function(nodeId){
		if(typeof(nodeId)=="undefined" || nodeId==null || nodeId==""){
			return null;
		}
		for(var i=0;this.nodes.length;i++){
			for(var j=0;j<this.nodes[i].length;j++){
				if(this.nodes[i][j].id==nodeId){
					return this.nodes[i][j];
				}
			}
		}
		return null;
	},
	/**
	 * 设置环节、路径的默认属性值
	 * @param {Object} type
	 */
	setDefaultProperty:function(type){
        var objs = null;
        if (type == 'n')
            objs = this.nodes;
        else
            objs = this.lines;
        var arr = [];
        for (var i = 0; i < objs.length; i++) {
            var obj = objs[i];
            for (var j = 0; j < obj.length; j++) {
                var v = '';
				if(typeof(obj[j].defaultValue)!="undefined"){
					v = obj[j].defaultValue;
				}
				// 是否只读
				var vReadonly = false;
				if(typeof(obj[j].readonly)!="undefiend" && obj[j].readonly==true){
					vReadonly = true;
				}
				// 是否禁用
				var vDisabled = false;
				if(typeof(obj[j].disabled)!="undefiend" && obj[j].disabled==true){
					vDisabled = true;
				}
                var json = {
                    id: obj[j].id,
                    text: obj[j].text,
                    value: v,
                    readonly: vReadonly,
                    disabled: vDisabled
                };
                arr[arr.length] = json;
            }
        }
        return arr;
	},

	/**
	 * 设置属性窗口中的对象属性是否只读
	 * @param {Object} objId		对象id
	 * @param (Object) isReadOnly	是否只读
	 */
	setPropertyReadOnly:function(objId,isReadOnly){
		var type = "";
		if($("#" + objId).length>=0){
			try{
				type = $("#" + objId).attr("type").toLowerCase();
			}catch(e){}
		}
		if(typeof(isReadOnly)!="undefined" && isReadOnly==true){
			if(type=="input" || type=="textarea"){
				$("#" + objId).prop("readonly",true);
			}else{
				$("#" + objId).prop("disabled",true);
			}
		}else{
			if(type=="input" || type=="textarea"){
				$("#" + objId).prop("readonly",false);
			}else{
				$("#" + objId).prop("disabled",true);
			}
		}
	},

	/**
	 * 设置属性窗口中的对象属性是否禁用
	 *
	 * @param {Object} objId		对象id
	 * @param (Object) isReadOnly	是否只读
	 */
	setPropertyDisabled:function(objId,disabled){
		if(typeof(disabled)!="undefined" && disabled==true){
			$("#" + objId).prop("disabled",true);
			$("#" + objId).css("background-color", "#c0c0c0");
		}else{
			$("#" + objId).prop("disabled",false);
			$("#" + objId).css("background-color", "#ffffff");
		}
	},

	/**
	 * 设置节点的某个属性是否可用
	 *
	 * @param {string} id			属性id
	 * @param {boolean} status		是否可用(默认为true)
	 */
	setNodePropDisabled: function(id,status){
		if(typeof(status)=="undefined"){
			status = true;
		}
		var obj = this.getNodeObjById(id);
		if(obj!=null){
			obj["disabled"]=status;
		}
	},
	/**
	 * 取得指定id的属性
	 *
	 * @param {object} obj
	 * @param {string} propId
	 * @return {object}
	 */
	getPropertyById: function(obj,propId){
		for(var i=0; i < obj.property.length; i++){
			var prop = obj.property[i];
			if(prop.id.trim().toLowerCase() == propId.trim().toLowerCase()){
				return	prop;
			}
		}
		return	null;
	},
	/**
	 * 设置指定id的属性的值
	 *
	 * @param {object} obj
	 * @param {string} propId
	 * @param {string} propName
	 * @param {string} propValue
	 */
	setPropertyById: function(obj,propId,propName,propValue){
		for(var i=0; i < obj.property.length; i++){
			var prop = obj.property[i];
			if(prop.id.trim().toLowerCase() == propId.trim().toLowerCase()){
				prop[propName] = propValue;
			}
		}
	},
	/**
	 * 取得指定id的属性的值
	 */
	getPropertyValueById: function(obj,propId){
		var prop = this.getPropertyById(obj,propId);
		if(prop != null){
			return	prop.value;
		}else{
			return	null;
		}
	},
	/**
	 * 取得当前选中对象的指定id的属性
	 * @param (Object) propId
	 */
	getSelectedObjProp:function(propId){
		if(typeof(propId)=="undefined" || propId==null || propId.trim()==""){
			alert("请你指定要查找的属性的id！！");
			return null;
		}
		//找到当前属性窗口设置的对象
		var win = document.getElementById('propWin');
		var obj = win.selected;
		if(typeof(obj)=="undefined" || obj==null || typeof(obj.id)=="undefined" ||obj.id==null){
			alert("请你先点击一个对象！");
			return null;
		}

		for(var i=0; i < obj.property.length; i++){
			if(obj.property[i].id.trim().toLowerCase() == propId.trim().toLowerCase()){
				return	obj.property[i];
			}
		}
		return null;
	},
	/**
	 * 取得当前选中对象的指定id属性的值
	 * @param (Object) propId
	 */
	getSelectedObjPropValue:function(propId){
		var prop = this.getSelectedObjProp(propId);
		if(prop!=null){
			return	prop.value;
		}else{
			return	null;
		}
	},
	/**
	 * 取得节点的中文类型名
	 */
	getNodeChType:function(type){
		var chType = "";
		switch(type.trim().toLowerCase()){
			case	"sequence":
				chType = "顺序";
				break;
			case	"branch":
				chType = "分支";
				break;
			case	"fork":
				chType = "并发";
				break;
			case	"join":
				chType = "同步";
				break;
			case	"subprocess":
				chType = "子流程";
				break;
			case	"start":
				chType = "开始";
				break;
			case	"end":
				chType = "结束";
				break;
		}
		return	chType;
	}

}
